/***********************************************
 @Name :        小铭同学
 @Time :        2025-09-03
 @Email :       LiaoMingWJ233@163.com
 @Comment :     自定义控件 天气预报信息类 解JSON
 @FileName :    weather_json.h
 @Version :     1.0
************************************************/


#ifndef WEATHER_JSON_H
#define WEATHER_JSON_H

#include <QObject>
#include <QString>
#include <QList>
#include <QJsonObject>
#include <QJsonArray>
#include <QJsonDocument>
#include <QDebug>

// 天气预报信息类
class Forecast
{
public:
    QString high;       // 高温
    QString low;        // 低温
    QString ymd;        // 年月日
    QString week;       // 星期
    QString sunrise;    // 日出时间
    QString sunset;     // 日落时间
    int aqi;            // 空气质量指数
    QString fx;         // 风向
    QString fl;         // 风力
    QString type;       // 天气类型（如：晴、多云、雨等）
    QString notice;     // 温馨提示
};

// 天气JSON解析类，继承自QObject
class weather_JSON : public QObject
{
    Q_OBJECT  // Qt宏，启用信号槽机制
    
public:
    // 构造函数
    explicit weather_JSON(QObject *parent = nullptr);
    
    // 载入JSON字符串并解析
    bool loadFromJson(const QString &json);
    
    // 获取基本天气信息的接口函数
    
    QString city() const;         // 获取城市名称
    QString date() const;         // 获取日期
    QString updateTime() const;   // 获取天气数据更新时间
    
    QString shidu() const;        // 获取湿度
    QString wendu() const;        // 获取温度
    double pm25() const;          // 获取PM2.5值
    double pm10() const;          // 获取PM10值
    QString quality() const;      // 获取空气质量描述
    QString ganmao() const;       // 获取适宜人群/感冒提示
    
    // 获取7天天气预报列表
    QList<Forecast> forecastList() const;
    
private:
    // 成员变量，存储解析后的天气数据
    
    QString m_city;       // 城市名称
    QString m_date;       // 日期
    QString m_updateTime; // 更新时间
    
    QString m_shidu;      // 湿度
    QString m_wendu;      // 温度
    double m_pm25;        // PM2.5值
    double m_pm10;        // PM10值
    QString m_quality;    // 空气质量
    QString m_ganmao;     // 感冒提示
    
    QList<Forecast> m_forecast;  // 7天天气预报列表
    
signals:
    // 这里可以定义信号，用于通知数据更新等事件
    
};

#endif // WEATHER_JSON_H
